<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>this</title>
<body>
    <script>
        // 普通函数中的this window
        var x = 50;
        function fun(){
            console.log(this,this.x)
        }
        // fun();
        // fun.call({x:100}); // call apply中的this为call的第一个参数
        //  call 和apply的区别

        /* function fun2(a,b){
            console.log(this,a,b);
        }
        fun2.call({name:"曾庆林"},10,20);
        fun2.apply({name:"zql"},[50,100]); */
        // call,和apply 都对对象冒充this 执行一个函数
        // call 和aplly的第一个参数位 函数中的this       
        // apply 传递 用数据的方式传递
        function fun(){
            console.log(this,this.x)
        }
        const fun2 = fun.bind({x:220});
        fun2();
    //    柯里化，英语：Currying(果然是满满的英译中的既视感)，是把接受多个参数的函数变换成接受一个单一参数（最初函数的第一个参数）的函数，并且返回接受余下的参数而且返回结果的新函数的技术。(函数有多个参数，转换为函数单一参数)
        function fn(a,b,c,d){
            console.log(a,b,c,d);
        }
        // 让a的参数默认10， 创建一个新的函数
        var fn1 = fn.bind(null,10);
        var fn2 = fn1.bind(null,20);
        fn2(50,100);
        fn2(80,160);
    </script>

</body>
</html>